From b10b51e1995dcf30ed50658432aee4d9408b5d3c Mon Sep 17 00:00:00 2001 From: robertl Date: Tue, 30 Mar 2010 02:21:22 +0000 Subject: [PATCH] Add elemin and elemax options to discard filter. --- discard.c | 19 +++++++++++++++++++ xmldoc/filters/options/discard-elemax.xml | 2 ++ xmldoc/filters/options/discard-elemin.xml | 4 ++++ 3 files changed, 25 insertions(+) create mode 100644 xmldoc/filters/options/discard-elemax.xml create mode 100644 xmldoc/filters/options/discard-elemin.xml diff --git a/discard.c b/discard.c index fbb00f156..9e380a2b7 100644 --- a/discard.c +++ b/discard.c @@ -29,9 +29,13 @@ static char *andopt = NULL; static char *satopt = NULL; static char *fixnoneopt = NULL; static char *fixunknownopt = NULL; +static char *eleminopt = NULL; +static char *elemaxopt = NULL; static double hdopf; static double vdopf; static int satpf; +static int eleminpf; +static int elemaxpf; static gpsdata_type what; static route_head *head; @@ -49,6 +53,10 @@ arglist_t fix_args[] = { NULL, ARGTYPE_BOOL, ARG_NOMINMAX}, {"fixunknown", &fixunknownopt, "Suppress waypoints with unknown fix", NULL, ARGTYPE_BOOL, ARG_NOMINMAX}, + {"elemin", &eleminopt, "Suppress waypoints below given elevation in meters", + NULL, ARGTYPE_BEGIN_REQ | ARGTYPE_INT, ARG_NOMINMAX}, + {"elemax", &elemaxopt, "Suppress waypoints above given elevation in meters", + NULL, ARGTYPE_BEGIN_REQ | ARGTYPE_INT, ARG_NOMINMAX}, ARG_TERMINATOR }; @@ -83,6 +91,12 @@ fix_process_wpt(const waypoint *wpt) if ((fixunknownopt) && (waypointp->fix == fix_unknown)) del = 1; + if ((eleminopt) && (waypointp->altitude < eleminpf)) + del = 1; + + if ((elemaxopt) && (waypointp->altitude > elemaxpf)) + del = 1; + if (del) { switch(what) { case wptdata: @@ -142,6 +156,11 @@ fix_init(const char *args) else satpf = -1; + if (eleminopt) + eleminpf = atoi(eleminopt); + + if (elemaxopt) + elemaxpf = atoi(elemaxopt); } filter_vecs_t discard_vecs = { diff --git a/xmldoc/filters/options/discard-elemax.xml b/xmldoc/filters/options/discard-elemax.xml new file mode 100644 index 000000000..abaefd431 --- /dev/null +++ b/xmldoc/filters/options/discard-elemax.xml @@ -0,0 +1,2 @@ +This option drops waypoints with an altitude higher than the specified value (in meters). See elemin for an explanation why this may be useful. + diff --git a/xmldoc/filters/options/discard-elemin.xml b/xmldoc/filters/options/discard-elemin.xml new file mode 100644 index 000000000..1b3fb4c70 --- /dev/null +++ b/xmldoc/filters/options/discard-elemin.xml @@ -0,0 +1,4 @@ +This option drops waypoints with an altitude lower than the specified +value (in meters). Although GPS altitude isn't very accurate, +GPS devices may log faulty waypoints from time to time, such as when +near tall buildings. Elevation values that are way off may signify such waypoints. Use this option to the filter to toss known rogue points. -- 2.30.2